/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.pruebaes.vistas;

import com.pruebaes.entidades.Novedades;
import com.pruebaes.excepciones.BorrarException;
import com.pruebaes.excepciones.ConsultarException;
import com.pruebaes.excepciones.GrabarException;
import com.pruebaes.excepciones.InsertarException;
import com.pruebaes.servicios.NovedadesFacade;
import com.pruebaes.utilitarios.Formulario;
import com.pruebaes.utilitarios.MensajesErrores;
import java.io.Serializable;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.ViewScoped;

/**
 *
 * @author luisfernando
 */
@ManagedBean(name = "novedades")
@ViewScoped
public class novedadesBean implements Serializable{
    private static final long serialVersionUID = 1L;

    /**
     * Creates a new instance of novedadesBean
     */
    public novedadesBean() {
        
    }
    
    @PostConstruct
    public void Incial(){
        buscar();
    } 
    
    private List<Novedades>listaNovedades;
    private  Novedades novedad;
    private Formulario formulario = new Formulario();
    @EJB private NovedadesFacade ejbNovedades;
    @ManagedProperty(value = "#{seguridad}")
    private seguridadBean seguridad;
    
    public String buscar(){
        try {
            Map parametros = new HashMap();
            parametros.put(";where", "o.id is not null ");
            parametros.put(";orden", "o.nombre");
            listaNovedades = ejbNovedades.encontarParametros(parametros);
        } catch (ConsultarException ex) {
            MensajesErrores.fatal("Falló la búsqueda" + ex.getMessage());
            Logger.getLogger(novedadesBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }
    
    public String nuevo(){
        formulario.insertar();
        novedad = new Novedades();        
        return null;
    }
    
    public String insertar(){
        if (validar()){
            return null;
        }
        try {
            ejbNovedades.create(novedad,getSeguridad().getUsuario());
        } catch (InsertarException ex) {
            MensajesErrores.fatal(ex.getMessage()+":"+ex.getCause());
            Logger.getLogger(novedadesBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        formulario.cancelar();
        buscar();
        return null;
    }
    
    public String modificar(Novedades novedad){
        this.novedad = novedad;
        formulario.editar();
        buscar();
        return null;
    }
    
    public String grabar(){
      if(validar()){
          return null;
      }  
        try {
            ejbNovedades.edit(novedad, seguridad.getUsuario());
        } catch (GrabarException ex) {
            MensajesErrores.fatal(ex.getMessage()+":"+ex.getCause());
            Logger.getLogger(novedadesBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        formulario.cancelar();
        buscar();
        return null;
    }
    private boolean validar(){
        if((novedad.getNombre()==null)||(novedad.getNombre().isEmpty())){
            MensajesErrores.advertecia("Necesario ingresar nombre");
            return true;
        }
        return false;
    }
    
    public String eliminar(Novedades novedad){
        this.novedad = novedad;
        formulario.borrar();
        return null;
    }

    public String borrar(){
        try {
            ejbNovedades.remove(novedad, null);
        } catch (BorrarException ex) {
            MensajesErrores.fatal(ex.getMessage()+":"+ex.getCause());
            Logger.getLogger(novedadesBean.class.getName()).log(Level.SEVERE, null, ex);
        }
        formulario.cancelar();
        buscar();
        return null;
    }
    /**
     * @return the listaNovedades
     */
    public List<Novedades> getListaNovedades() {
        return listaNovedades;
    }

    /**
     * @param listaNovedades the listaNovedades to set
     */
    public void setListaNovedades(List<Novedades> listaNovedades) {
        this.listaNovedades = listaNovedades;
    }

    /**
     * @return the novedad
     */
    public Novedades getNovedad() {
        return novedad;
    }

    /**
     * @param novedad the novedad to set
     */
    public void setNovedad(Novedades novedad) {
        this.novedad = novedad;
    }

    /**
     * @return the formulario
     */
    public Formulario getFormulario() {
        return formulario;
    }

    /**
     * @param formulario the formulario to set
     */
    public void setFormulario(Formulario formulario) {
        this.formulario = formulario;
    }

    /**
     * @return the seguridad
     */
    public seguridadBean getSeguridad() {
        return seguridad;
    }

    /**
     * @param seguridad the seguridad to set
     */
    public void setSeguridad(seguridadBean seguridad) {
        this.seguridad = seguridad;
    }
}
